Computers and computer software have become nearly ubiquitous throughout society. Virtually every business utilizes commercial or custom software for tasks such as managing inventory, billing, document preparation, product design and/or production and the like. Similarly, educational institutions and nonprofit organizations utilize software for research, word-processing and other processes. Larges numbers of individuals also utilizes computers and computer software for diverse tasks such as preparation of tax returns, research, directions and the like. As computer-related hardware continues to develop, uses for computer software continue to grow, leading to the development of additional software programs and data.
Syntactic analyzers or parsers are commonly used to analyze data and/or compile software code. In particular, software developers create programs using artificial programming languages (e.g., Basic, C, C++, structured query language (SQL) and the like). Software programs are translated or compiled from such programming languages into a machine-readable format that a computer or processor can execute. Compilation can be broken down into a number of steps. Typically, programming code is first parsed. During parsing, the file containing the text of the software code analyzed to generate a parse tree. Moreover, parsers can identify syntactic errors in software code and alert programmers to such errors. After parsing, the resulting parse tree is further processed by a compiler that generates executable code. Parsers can be used to analyze text input based upon a grammar or set of rules.
Over time languages continue to evolve, frequently adding features and increasing flexibility. As languages change, parsers associated with the language also change to accept the new grammar and develop the correct parse tree. Parsers are frequently created automatically using parser generator tools such as YACC (yet another compiler compiler). A set of grammar rules can serve as a seed for a parser generator, which can output a parser that functions in accordance with the provided grammar.